Computer users have been frustrated for a long time by the inability of computer systems to intelligently adapt to new or changed computing and/or operating environments. This frustration may be even more acute for users of mobile computers who may work on numerous different activities, often at multiple physical locations and under varying circumstances. For instance, at the beginning of a day, a mobile computer user may be home, interacting with family or friends using email or instant messaging. The mobile computer user may then later make a presentation during a meeting at work. In the evening, the mobile computer user may be preparing a business proposal while traveling on an airplane for a business meeting the next day.
Unfortunately, the computer may remain similarly configured for each of these different environments and uses, even when the configuration for one environment no longer remains relevant and needs to be changed in another environment. For example, a user may need to configure the mobile computer for changes in physical location when the user moves between a home network and a work network. In this case, the user may need to change the default printer setting, the default internet browser home page, the internet browser proxy settings, and other related settings. A user may also need to configure the computer for changes in activity. For instance, a user preparing to make a presentation may adjust the volume of the computer, turn off instant message notifications, turn off a screensaver time-out, and make other setting adjustments. The user may also need to configure the computer to interact with different people at work than those at home. For example, a different default email account may be used at home to communicate with friends and family than the email account used at work. As a result, a mobile computer user may have to reconfigure a mobile computer each time the computing environment changes.
What is needed is a way for a computer system to accumulate and expose context information about the computing environment, such as the physical location, the people the user may interact with at the physical location, the user's activities, etc., so that the context information may be used to intelligently adapt the computer to the computing environment. Such a system and method should accumulate and expose context information in a uniform and systematic way so that any executable may provide or use the context information to intelligently adapt the computer system.